# 项目名称：获取乌合之众书籍描述

# 1）HTML 文档元素、标签和属性的理解；
# 2）浏览器开发者工具的使用；
# 3）BeautifulSoup 对象和Tag 对象嵌套关系的理解；
# 4）find()与find_all()方法的使用；
# 5）Tag 对象.text和Tag 对象['属性名']的灵活使用。

# 导入相应模块
import requests
from bs4 import BeautifulSoup

# 获取网页
# 《乌合之众》网页的 URL
url = "https://wp.forchange.cn/psychology/11069/"
# 请求网页
res = requests.get(url)

# 打印响应的状态码
print(res.status_code)

# 将响应内容的编码格式设置为utf-8
res.encoding = "utf-8"

# 解析网页
# 解析请求到的网页，得到 BeautifulSoup 对象
bs = BeautifulSoup(res.text,"html.parser")

# 用 find() 搜索书籍信息的父节点<div>
info_tag = bs.find("div",class_ ="res-attrs")
# 用 find_all() 搜索每条信息的节点<dl>
info_list = info_tag.find_all("dl")

# 方式一：不存储
# 用 for 循环遍历搜索结果，在每个<dl>节点中继续提取
for info in info_list:
    # 提取信息提示项<dt>的元素内容
    dt = info.find('dt').text
    print(dt)
    # 提取书籍信息<dd>的元素内容
    dd = info.find('dd').text
    print(dd)


print("==========分隔线==========")
# 方式二：用字典存储
info_dict = {}

# 遍历搜索结果，提取文本内容，存储到字典中
for info in info_list:
    # 提取信息提示项<dt>的元素内容
    key = info.find("dt").text[:-2]
    # 提取书籍信息<dd>的元素内容
    val = info.find("dd").text
    # 将信息添加到字典中
    info_dict[key] = val

# 打印查看字典中的书籍信息
print(info_dict)